﻿using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity.ModelConfiguration;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Triunfadores.BusinessEntities;

namespace Triunfadores.Repository.Mapping
{
    public class PrestamoMap:EntityTypeConfiguration<Prestamo>
    {
        public PrestamoMap()
        {
            //clave primaria y identidad=true
            this.HasKey(pr => pr.Id);
            this.Property(pr => pr.Id)
                .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);

            //propiedades
            this.Property(pr => pr.FechRegistro)
               .HasColumnType("datetime2")
               .IsRequired();
            this.Property(pr => pr.NroCuotas)
                .HasColumnType("int")
                .IsRequired();
            this.Property(pr => pr.Monto)
                .HasColumnType("decimal")
                .HasPrecision(9,2)
                .IsRequired();
            this.Property(pr => pr.PeriodoPago)
                .HasColumnType("varchar")
                .HasMaxLength(15)
                .IsRequired();
            this.Property(pr => pr.TasaInteres)
                .HasColumnType("decimal")
                .HasPrecision(9, 2)
                .IsRequired();
            this.Property(pr => pr.Total)
                .HasColumnType("decimal")
                .HasPrecision(9, 2)
                .IsRequired();
            
            //Relaciones
            //un prestamo  tiene un avalado
            this.HasRequired(pr=>pr.Avalador)
                .WithMany(pr=>pr.IcPrestamosAvalado)
                .HasForeignKey(pr=>pr.IdAvalador)
                .WillCascadeOnDelete(false);
            //un pretamo va a tener un socio
            this.HasRequired(pr=>pr.Cliente)
                .WithMany(pr=>pr.IcPrestamosCliente)
                .HasForeignKey(pr=>pr.IdCliente)
                .WillCascadeOnDelete(false);
        }
        
    }
}
